package com.nas.crocus.controller;

import java.util.ArrayList;
import java.util.Collection;

import javax.annotation.Resource;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import com.nas.crocus.domain.Evento;
import com.nas.crocus.domain.RegistroPasajero;
import com.nas.crocus.dto.ItemDto;
import com.nas.crocus.exception.NotFoundException;
import com.nas.crocus.service.EventoService;
import com.nas.crocus.service.RegistroPasajeroService;


@Controller
@RequestMapping(value = "/page/evento/{eventoId}/pasajero")
public class PasajeroPageController {
    
    @Autowired
    private EventoService eventoService;
    
    @Autowired
    private RegistroPasajeroService registroPasajeroService;
    
    @Resource(name="menu")
    private Collection<ItemDto> menu;
    
    @RequestMapping(method = RequestMethod.GET)
    public String personas(@PathVariable Long eventoId, Model model) {
        
        model.addAttribute("menu", menu);
        model.addAttribute("breadcrumb", getBreadcrumb(eventoService.buscar(eventoId)));
        model.addAttribute("eventoId", eventoId);
        
        return "pasajeroListado";
    }
    
    @RequestMapping(value = "/edicion/id/{id}", method = RequestMethod.GET)
    public String edicion(@PathVariable Long eventoId, @PathVariable Long id, Model model) throws NotFoundException {
       
        ItemDto item = new ItemDto();
        //item.setDescripcion(evento.getNombre());
        item.setUrl("/app/page/evento/" + eventoId + "/pasajero/edicion/id/"+id);
        model.addAttribute("menu", menu);
        RegistroPasajero registroPasajero = registroPasajeroService.obtenerPorEventoId(eventoId);
        
        
        //Evento evento  = eventoService.buscar(eventoId);
        Collection <ItemDto> breadcrumb = getBreadcrumb(registroPasajero.getEvento());
        breadcrumb.add(item);
        model.addAttribute("breadcrumb", breadcrumb);
        model.addAttribute("eventoId", eventoId);
        model.addAttribute("pasajeroId", id);
        model.addAttribute("registroPasajeroId", registroPasajero.getId());
        return "pasajeroFormulario";
    }
    
    @RequestMapping(value = "/alta", method = RequestMethod.GET)
    public String alta(@PathVariable Long eventoId, Model model) throws NotFoundException {
        ItemDto item = new ItemDto();
        item.setDescripcion("Nueva persona");
        item.setUrl("/app/page/evento/" + eventoId +"/pasajero/alta");
        model.addAttribute("menu", menu);
        RegistroPasajero registroPasajero = registroPasajeroService.obtenerPorEventoId(eventoId);
        //Evento evento  = eventoService.buscar(eventoId);
        Collection <ItemDto> breadcrumb = getBreadcrumb(registroPasajero.getEvento());
        breadcrumb.add(item);
        model.addAttribute("breadcrumb", breadcrumb);
        model.addAttribute("eventoId", eventoId);
        model.addAttribute("registroPasajeroId", registroPasajero.getId());
        
        return "pasajeroFormulario";
    }
    private Collection<ItemDto> getBreadcrumb(Evento evento){
        ArrayList<ItemDto> breadcrumb = new ArrayList<ItemDto>();
        ItemDto item = new ItemDto();
        item.setDescripcion("Eventos");
        item.setUrl("/app/page/evento");
        breadcrumb.add(item);
        
        item = new ItemDto();
        item.setDescripcion(evento.getNombre());
        item.setUrl("/app/page/evento/edicion/id/"+evento.getId());
        breadcrumb.add(item);
        
        item = new ItemDto();
        item.setDescripcion("Pasajeros");
        item.setUrl("/app/page/evento/" + evento.getId() + "/pasajero" );
        breadcrumb.add(item);
        
        return breadcrumb;
    }
}
